import axios from 'axios'
// 导入store
import store from '@/store'
import router from '@/router'

// 创建axios实例
const service = axios.create({
  // 基地址
  // baseURL: 'http://ihrm-java.itheima.net'
  // baseURL: 'http://ihrm.itheima.net'
  // baseURL: '/api' // 不能写死
  baseURL: process.env.VUE_APP_BASE_API // 自动根据不同的环境变量设置不同的axios的请求地址
  // withCredentials: true, // send cookies when cross-domain requests
  // timeout: 5000 // request timeout
})

// 配置请求拦截器
service.interceptors.request.use(config => {
  const token = store.state.user.token
  if (token) { // 判断是否有token,有就添加请求头
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
}
, error => {
  return Promise.reject(error)
})
// 配置响应拦截器   //被暴露的是service(axios实例)
service.interceptors.response.use(response => {
  // 如果响应中data.success = false 说明用户名和密码错误 需要抛出一个错误
  if (!response.data.success) {
    return Promise.reject(response.data.message) // 错误会被catch捕获到
  }
  // 取出响应结果,返回给浏览器 (类似于解构)
  return response.data
}, error => {
  console.log('所有错误的响应都会经过这里', error.response)
  // token失效error.response.status === 401 /  error.response.data.code === 10002
  if (error.response.status === 401 && error.response.data.code === 10002) {
    // 清空token 清空用户信息  退出登录
    store.dispatch('user/logout')
    // js文件中如何获取当前页面的地址 ---> router.currentRoute.fullPath
    console.log(router)
    router.push('/login?return_url=' + encodeURIComponent(router.currentRoute.fullPath))
  }
  return Promise.reject(error) // 返回执行错误 让当前的执行链跳出成功 直接进入 catch
})

// 默认导出
export default service
